#    pythonequations is a collection of equations expressed as Python classes
#    Copyright (C) 2008 James R. Phillips
#    2548 Vera Cruz Drive
#    Birmingham, AL 35235 USA
#    email: zunzun@zunzun.com
#
#    License: BSD-style (see LICENSE.txt in main source directory)
#    Version info: $Id: Miscellaneous.py 328 2011-09-24 18:42:58Z zunzun.com $

import pythonequations, pythonequations.EquationBaseClasses, pythonequations.ExtraCodeForEquationBaseClasses
import numpy
numpy.seterr(all = 'raise') # numpy raises warnings, convert to exceptions to trap them


class MennSurfaceA3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Menn's Surface A"
    _HTML = "z = ax<sup>4</sup> + bx<sup>2</sup>y - cy<sup>2</sup>"
    coefficientDesignatorTuple = ("a", 'b','c')
    function_cpp_code = 'temp = coeff[0] * _id[_cwo[0]+i] + coeff[1] * _id[_cwo[1]+i] * _id[_cwo[2]+i] - coeff[2] * _id[_cwo[3]+i];'

    x_in = 'x_in'
    y_in = 'y_in'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[4.0]), [4.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[2.0]), [2.0]])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * " + self.x_in + " * " + self.x_in + " * " + self.x_in + " * " + self.x_in + " + b * " + self.x_in + " * " + self.x_in + " * " + self.y_in + " - c * " + self.y_in + " * " + self.y_in + ";\n"
        return s



class MennSurfaceB3D(MennSurfaceA3D):
    _name ="Menn's Surface B"
    _HTML = "z = ay<sup>4</sup> + by<sup>2</sup>x - cy<sup>2</sup>"

    x_in = 'y_in'
    y_in = 'x_in'

    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[4.0]), [4.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])



class MonkeySaddleA3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Monkey Saddle A"
    _HTML = "z = ax<sup>3</sup> - bxy<sup>2</sup>"
    coefficientDesignatorTuple = ("a", 'b')
    function_cpp_code = 'temp = coeff[0] * _id[_cwo[0]+i] - coeff[1] * _id[_cwo[1]+i] * _id[_cwo[2]+i];'

    x_in = 'x_in'
    y_in = 'y_in'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[3.0]), [3.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[2.0]), [2.0]])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * " + self.x_in + " * " + self.x_in + " * " + self.x_in + " - b * " + self.x_in + " * " + self.y_in + " * " + self.y_in + ";\n"
        return s



class MonkeySaddleB3D(MonkeySaddleA3D):
    _name ="Monkey Saddle B"
    _HTML = "z = ay<sup>3</sup> - byx<sup>2</sup>"

    x_in = 'y_in'
    y_in = 'x_in'

    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[3.0]), [3.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])



class MonkeySaddle_TransformA3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Monkey Saddle Transform A"
    _HTML = "z = a(cx + d)<sup>3</sup> - b(cx + d)(fy + g)<sup>2</sup>"
    coefficientDesignatorTuple = ("a", 'b', 'c', 'd', 'f', 'g')
    function_cpp_code = 'temp = coeff[0] * pow(coeff[2] * _id[_cwo[0]+i] + coeff[3], 3.0) - coeff[1] * (coeff[2] * _id[_cwo[0]+i] + coeff[3]) * pow(coeff[4] * _id[_cwo[1]+i] + coeff[5], 2.0);'

    x_in = 'x_in'
    y_in = 'y_in'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * pow(c * " + self.x_in + " + d, 3.0) - b * (c * " + self.x_in + " + d) * pow(f * " + self.y_in + " + g, 2.0);\n"
        return s



class MonkeySaddle_TransformB3D(MonkeySaddle_TransformA3D):
    _name ="Monkey Saddle Transform B"
    _HTML = "z = a(cy + d)<sup>3</sup> - b(cy + d)(ex + f)<sup>2</sup>"

    x_in = 'y_in'
    y_in = 'x_in'

    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])




class MeanCurvatureOfParaboloid3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Mean Curvature Of Paraboloid"
    _HTML = "z = 2 * (a + 2a<sup>3</sup> * (x<sup>2</sup> + y<sup>2</sup>)) / (1 + 4a<sup>2</sup> * (x<sup>2</sup> + y<sup>2</sup>))<sup>1.5</sup>"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = 2.0 * (coeff[0] + 2.0 * pow(coeff[0], 3.0) * _id[_cwo[0]+i]) / pow(1.0 + 4.0 * pow(coeff[0], 2.0) * _id[_cwo[0]+i], 1.5);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_XSQPLUSYSQ(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = 2.0 * (a + 2.0 * pow(a, 3.0) * (x_in * x_in + y_in * y_in)) / pow(1.0 + 4.0 * a * a * (x_in * x_in + y_in * y_in), 1.5);\n"
        return s



class GaussianCurvatureOfParaboloid3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Gaussian Curvature Of Paraboloid"
    _HTML = "z = 4a<sup>2</sup> / (1 + 4a<sup>2</sup> * (x<sup>2</sup> + y<sup>2</sup>))<sup>2</sup>"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = 4.0 * pow(coeff[0], 2.0) / pow(1.0 + 4.0 * pow(coeff[0], 2.0) * _id[_cwo[0]+i], 2.0);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_XSQPLUSYSQ(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = 4.0 * a * a / pow(1.0 + 4.0 * a * a * (x_in * x_in + y_in * y_in)), 2.0);\n"
        return s



class Paraboloid3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Paraboloid"
    _HTML = "z = a * (x<sup>2</sup> + y<sup>2</sup>)"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = coeff[0] * _id[_cwo[0]+i];'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_XSQPLUSYSQ(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * (x_in * x_in + y_in * y_in);\n"
        return s



class Paraboloid_Transform3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Paraboloid Transform"
    _HTML = "z = a * ((bx + c)<sup>2</sup> + (dy + f)<sup>2</sup>)"
    coefficientDesignatorTuple = ("a", 'b', 'c', 'd', 'f')
    function_cpp_code = 'temp = coeff[0] * (pow(coeff[1] * _id[_cwo[0]+i] + coeff[2], 2.0) + pow(coeff[3] * _id[_cwo[1]+i] + coeff[4], 2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * (pow(b * x_in + c, 2.0) + pow(d * y_in + f, 2.0));\n"
        return s



class GaussianCurvatureOfRichmondsMinimalSurface3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Gaussian Curvature Of Richmond's Minimal Surface"
    _HTML = "z = -1.0 * a * (x<sup>2</sup> + y<sup>2</sup>)<sup>3</sup> / (b + (x<sup>2</sup> + y<sup>2</sup>)<sup>2</sup>)<sup>4</sup>"
    coefficientDesignatorTuple = ("a", "b")
    function_cpp_code = 'temp = -1.0 * coeff[0] * pow(_id[_cwo[0]+i], 3.0) / pow(coeff[1] + pow(_id[_cwo[0]+i], 2.0), 4.0);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_XSQPLUSYSQ(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = -1.0 * a * pow(x_in * x_in + y_in * y_in, 3.0) / pow(b + pow(x_in * x_in + y_in * y_in, 2.0), 4.0);\n"
        return s



class MeanCurvatureOfWhitneysUmbrellaA3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Mean Curvature Of Whitney's Umbrella A"
    _HTML = "z = -1.0 * x * (a + b * y<sup>2</sup>) / (x<sup>2</sup> + a * (y<sup>2</sup> + y<sup>4</sup>))<sup>1.5</sup>"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = -1.0 * _id[_cwo[3]+i] * (coeff[0] + coeff[1] * _id[_cwo[1]+i]) / pow(_id[_cwo[0]+i] + coeff[0] * (_id[_cwo[1]+i] + _id[_cwo[2]+i]), 1.5);'

    x_in = 'x_in'
    y_in = 'y_in'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[4.0]), [4.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = -1.0 * " + self.x_in + " * (a + b * " + self.y_in + " * " + self.y_in + ") / pow(" + self.x_in + " * " + self.x_in + " + a * (" + self.y_in + " * " + self.y_in + " + pow(" + self.y_in + ", 4.0)), 1.5);\n"
        return s



class MeanCurvatureOfWhitneysUmbrellaB3D(MeanCurvatureOfWhitneysUmbrellaA3D):
    _name ="Mean Curvature Of Whitney's Umbrella B"
    _HTML = "z = -1.0 * y * (a + b * x<sup>2</sup>) / (y<sup>2</sup> + a * (x<sup>2</sup> + x<sup>4</sup>))<sup>1.5</sup>"

    x_in = 'y_in'
    y_in = 'x_in'

    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[4.0]), [4.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])



class GaussianCurvatureOfWhitneysUmbrellaA3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Gaussian Curvature Of Whitney's Umbrella A"
    _HTML = "z = -1.0 * a * y<sup>2</sup> / (x<sup>2</sup> + a * (y<sup>2</sup> + y<sup>4</sup>))<sup>2</sup>"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = -1.0 * coeff[0] * _id[_cwo[1]+i] / pow(_id[_cwo[0]+i] + coeff[0] * (_id[_cwo[1]+i] + _id[_cwo[2]+i]), 2.0);'

    x_in = 'x_in'
    y_in = 'y_in'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[4.0]), [4.0]])

    def SpecificCodeCPP(self):
        s = "\ttemp = -1.0 * a * " + self.y_in + " * " + self.y_in + " / pow(" + self.x_in + " * " + self.x_in + " + a * (" + self.y_in + " * " + self.y_in + " + pow(" + self.y_in + ", 4.0)), 2.0);\n"
        return s



class GaussianCurvatureOfWhitneysUmbrellaB3D(GaussianCurvatureOfWhitneysUmbrellaA3D):
    _name ="Gaussian Curvature Of Whitney's Umbrella B"
    _HTML = "z = -1.0 * a * x<sup>2</sup> / (y<sup>2</sup> + a * (x<sup>2</sup> + x<sup>4</sup>))<sup>2</sup>"

    x_in = 'y_in'
    y_in = 'x_in'

    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowY(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[4.0]), [4.0]])



class PaschensBreakdownFieldStrengthLaw3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Paschen's Law for Breakdown Field Strength"
    _HTML = "Ebreakdown = pressure * (a / (ln(pressure * distance) + b))"
    coefficientDesignatorTuple = ("a", "b")
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    CannotAcceptDataWithZeroY = True
    CannotAcceptDataWithNegativeY = True
    function_cpp_code = 'temp = _id[_cwo[0]+i] * (coeff[0] / (_id[_cwo[1]+i] + coeff[1]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_LogXY(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = x_in * (a / (log(x_in * y_in) + b));\n"
        return s



class PaschensBreakdownVoltageLaw3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Paschen's Law for Breakdown Voltage"
    _HTML = "Vbreakdown = a(pressure * distance) / (ln(pressure * distance) + b)"
    coefficientDesignatorTuple = ("a", "b")
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    CannotAcceptDataWithZeroY = True
    CannotAcceptDataWithNegativeY = True
    function_cpp_code = 'temp = (coeff[0] * _id[_cwo[0]+i]) / (_id[_cwo[1]+i] + coeff[1]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_XY(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_LogXY(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a * x_in * y_in) / (log(x_in * y_in) + b);\n"
        return s



class LipingZheng3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Liping Zheng's core loss coefficients"
    _HTML = "z = ax<SUP>2</SUP>y + bx<SUP>2</SUP>y<SUP>2</SUP> + cx<SUP>1.5</SUP>y<SUP>1.5</SUP>"
    coefficientDesignatorTuple = ("a", "b", "c")
    CannotAcceptDataWithNegativeX = True
    CannotAcceptDataWithNegativeY = True
    function_cpp_code = 'temp = coeff[0] * _id[_cwo[0]+i] + coeff[1] * _id[_cwo[1]+i] + coeff[2] * _id[_cwo[2]+i];'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX_PowY(NameOrValueFlag=1, args=[2.0, 1.0]), [2.0, 1.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX_PowY(NameOrValueFlag=1, args=[2.0, 2.0]), [2.0, 2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX_PowY(NameOrValueFlag=1, args=[1.5, 1.5]), [1.5, 1.5]])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * x_in * x_in * y_in + b * x_in * x_in * y_in * y_in + c * pow(x_in, 1.5) * pow(y_in, 1.5);\n"
        return s



class GaryCler3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Gary Cler's Custom Equation"
    _HTML = "z = a * x<SUP>b</SUP> * y<SUP>c</SUP>"
    coefficientDesignatorTuple = ("a", "b", "c")
    function_cpp_code = 'temp = coeff[0] * pow(_id[_cwo[0]+i], coeff[1]) * pow(_id[_cwo[1]+i], coeff[2]);'

    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * pow(x_in, b) * pow(y_in, c);\n"
        return s



class GaryCler_Transform3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Gary Cler's Custom Equation Transform"
    _HTML = "z = a * (dx + f)<SUP>b</SUP> * (gy + h)<SUP>c</SUP>"
    coefficientDesignatorTuple = ("a", "b", "c", 'd', 'f', 'g', 'h')
    function_cpp_code = 'temp = coeff[0] * pow(coeff[3] * _id[_cwo[0]+i] + coeff[4], coeff[1]) * pow(coeff[5] * _id[_cwo[1]+i] + coeff[6], coeff[2]);'

    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * pow(d * x_in + f, b) * pow(g * y_in + h, c);\n"
        return s



class Simple_Equation_01_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 01"
    _HTML = "z = a*pow(x,b)*pow(y,c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1])*pow(_id[_cwo[1]+i],coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b)*pow(y_in,c);\n"
        return s



class Simple_Equation_02_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 02"
    _HTML = "z = x/(a+b*y)"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = _id[_cwo[0]+i]/(coeff[0]+coeff[1]*_id[_cwo[1]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = x_in/(a+b*y_in);\n"
        return s



class Simple_Equation_03_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 03"
    _HTML = "z = y/(a+b*x)"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = _id[_cwo[1]+i]/(coeff[0]+coeff[1]*_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = y_in/(a+b*x_in);\n"
        return s



class Simple_Equation_04_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 04"
    _HTML = "z = a*pow(x,b*y)"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]*_id[_cwo[1]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b*y_in);\n"
        return s



class Simple_Equation_05_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 05"
    _HTML = "z = a*pow(y,b*x)"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[1]+i],coeff[1]*_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(y_in,b*x_in);\n"
        return s



class Simple_Equation_06_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 06"
    _HTML = "z = a*pow(x,b/y)"
    coefficientDesignatorTuple = ('a', 'b')
    CannotAcceptDataWithZeroY = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]/_id[_cwo[1]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b/y_in);\n"
        return s



class Simple_Equation_07_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 07"
    _HTML = "z = a*pow(y,b/x)"
    coefficientDesignatorTuple = ('a', 'b')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[1]+i],coeff[1]/_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(y_in,b/x_in);\n"
        return s



class Simple_Equation_08_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 08"
    _HTML = "z = a*x+b*pow(y,2.0)"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = coeff[0]*_id[_cwo[0]+i]+coeff[1]*pow(_id[_cwo[1]+i],2.0);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*x_in+b*pow(y_in,2.0);\n"
        return s



class Simple_Equation_09_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 09"
    _HTML = "z = a*y+b*pow(x,2.0)"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = coeff[0]*_id[_cwo[1]+i]+coeff[1]*pow(_id[_cwo[0]+i],2.0);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*y_in+b*pow(x_in,2.0);\n"
        return s



class Simple_Equation_10_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 10"
    _HTML = "z = x/(a+b*pow(y,2.0))"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = _id[_cwo[0]+i]/(coeff[0]+coeff[1]*pow(_id[_cwo[1]+i],2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = x_in/(a+b*pow(y_in,2.0));\n"
        return s



class Simple_Equation_11_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 11"
    _HTML = "z = y/(a+b*pow(x,2.0))"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = _id[_cwo[1]+i]/(coeff[0]+coeff[1]*pow(_id[_cwo[0]+i],2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = y_in/(a+b*pow(x_in,2.0));\n"
        return s



class Simple_Equation_12_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 12"
    _HTML = "z = a*pow(b,x)*pow(y,c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(coeff[1],_id[_cwo[0]+i])*pow(_id[_cwo[1]+i],coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(b,x_in)*pow(y_in,c);\n"
        return s



class Simple_Equation_13_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 13"
    _HTML = "z = a*pow(b,y)*pow(x,c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(coeff[1],_id[_cwo[1]+i])*pow(_id[_cwo[0]+i],coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(b,y_in)*pow(x_in,c);\n"
        return s



class Simple_Equation_14_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 14"
    _HTML = "z = a*pow(x*y,b)"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i]*_id[_cwo[1]+i],coeff[1]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in*y_in,b);\n"
        return s



class Simple_Equation_15_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 15"
    _HTML = "z = a*pow(x/y,b)"
    coefficientDesignatorTuple = ('a', 'b')
    CannotAcceptDataWithZeroY = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i]/_id[_cwo[1]+i],coeff[1]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in/y_in,b);\n"
        return s



class Simple_Equation_16_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 16"
    _HTML = "z = a*(pow(b,1.0/x))*pow(y,c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*(pow(coeff[1],1.0/_id[_cwo[0]+i]))*pow(_id[_cwo[1]+i],coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*(pow(b,1.0/x_in))*pow(y_in,c);\n"
        return s



class Simple_Equation_17_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 17"
    _HTML = "z = a*pow(b,1.0/y)*pow(x,c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroY = True
    function_cpp_code = 'temp = coeff[0]*pow(coeff[1],1.0/_id[_cwo[1]+i])*pow(_id[_cwo[0]+i],coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(b,1.0/y_in)*pow(x_in,c);\n"
        return s



class Simple_Equation_18_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 18"
    _HTML = "z = a*pow(x/b,c)*exp(y/b)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i]/coeff[1],coeff[2])*exp(_id[_cwo[1]+i]/coeff[1]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in/b,c)*exp(y_in/b);\n"
        return s



class Simple_Equation_19_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 19"
    _HTML = "z = a*pow(y/b,c)*exp(x/b)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[1]+i]/coeff[1],coeff[2])*exp(_id[_cwo[0]+i]/coeff[1]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(y_in/b,c)*exp(x_in/b);\n"
        return s



class Simple_Equation_20_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 20"
    _HTML = "z = a*pow(x,b+c*y)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]+coeff[2]*_id[_cwo[1]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b+c*y_in);\n"
        return s



class Simple_Equation_21_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 21"
    _HTML = "z = a*pow(y,b+c*x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[1]+i],coeff[1]+coeff[2]*_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(y_in,b+c*x_in);\n"
        return s



class Simple_Equation_22_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 22"
    _HTML = "z = a*pow(x,b+c/y)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroY = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]+coeff[2]/_id[_cwo[1]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b+c/y_in);\n"
        return s



class Simple_Equation_23_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 23"
    _HTML = "z = a*pow(y,b+c/x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[1]+i],coeff[1]+coeff[2]/_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(y_in,b+c/x_in);\n"
        return s



class Simple_Equation_24_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 24"
    _HTML = "z = a*pow(x,b+c*ln(y))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroY = True
    CannotAcceptDataWithNegativeY = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]+coeff[2]*log(_id[_cwo[1]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b+c*ln(y_in));\n"
        return s



class Simple_Equation_25_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 25"
    _HTML = "z = a*pow(y,b+c*ln(x))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[1]+i],coeff[1]+coeff[2]*log(_id[_cwo[0]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(y_in,b+c*ln(x_in));\n"
        return s



class Simple_Equation_26_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 26"
    _HTML = "z = a*pow(y,b+c/ln(x))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[1]+i],coeff[1]+coeff[2]/log(_id[_cwo[0]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(y_in,b+c/ln(x_in));\n"
        return s



class Simple_Equation_27_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 27"
    _HTML = "z = a*pow(x,b+c/ln(y))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroY = True
    CannotAcceptDataWithNegativeY = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]+coeff[2]/log(_id[_cwo[1]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b+c/ln(y_in));\n"
        return s



class Simple_Equation_28_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 28"
    _HTML = "z = a*exp(b*x+c*pow(y,2.0))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*exp(coeff[1]*_id[_cwo[0]+i]+coeff[2]*pow(_id[_cwo[1]+i],2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp(b*x_in+c*pow(y_in,2.0));\n"
        return s



class Simple_Equation_29_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 29"
    _HTML = "z = a*exp(b*y+c*pow(x,2.0))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*exp(coeff[1]*_id[_cwo[1]+i]+coeff[2]*pow(_id[_cwo[0]+i],2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp(b*y_in+c*pow(x_in,2.0));\n"
        return s



class Simple_Equation_30_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 30"
    _HTML = "z = a*exp(b/x+c*y)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*exp(coeff[1]/_id[_cwo[0]+i]+coeff[2]*_id[_cwo[1]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp(b/x_in+c*y_in);\n"
        return s



class Simple_Equation_31_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 31"
    _HTML = "z = a*exp(b/y+c*x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroY = True
    function_cpp_code = 'temp = coeff[0]*exp(coeff[1]/_id[_cwo[1]+i]+coeff[2]*_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp(b/y_in+c*x_in);\n"
        return s



class Simple_Equation_32_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 32"
    _HTML = "z = (a+x)/(b+c*y)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = (coeff[0]+_id[_cwo[0]+i])/(coeff[1]+coeff[2]*_id[_cwo[1]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a+x_in)/(b+c*y_in);\n"
        return s



class Simple_Equation_33_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 33"
    _HTML = "z = (a+y)/(b+c*x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = (coeff[0]+_id[_cwo[1]+i])/(coeff[1]+coeff[2]*_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a+y_in)/(b+c*x_in);\n"
        return s



class Simple_Equation_34_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 34"
    _HTML = "z = (a+x)/(b+c*pow(y,2.0))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = (coeff[0]+_id[_cwo[0]+i])/(coeff[1]+coeff[2]*pow(_id[_cwo[1]+i],2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a+x_in)/(b+c*pow(y_in,2.0));\n"
        return s



class Simple_Equation_35_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 35"
    _HTML = "z = (a+y)/(b+c*pow(x,2.0))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = (coeff[0]+_id[_cwo[1]+i])/(coeff[1]+coeff[2]*pow(_id[_cwo[0]+i],2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a+y_in)/(b+c*pow(x_in,2.0));\n"
        return s



class Simple_Equation_36_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 36"
    _HTML = "z = a*(exp(b*x)-exp(c*y))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*(exp(coeff[1]*_id[_cwo[0]+i])-exp(coeff[2]*_id[_cwo[1]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*(exp(b*x_in)-exp(c*y_in));\n"
        return s



class Simple_Equation_37_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 37"
    _HTML = "z = a*pow(x,b*pow(y,c))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]*pow(_id[_cwo[1]+i],coeff[2]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b*pow(y_in,c));\n"
        return s



class Simple_Equation_38_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 38"
    _HTML = "z = a*pow(y,b*pow(x,c))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[1]+i],coeff[1]*pow(_id[_cwo[0]+i],coeff[2]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(y_in,b*pow(x_in,c));\n"
        return s



class Simple_Equation_39_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 39"
    _HTML = "z = x/(a+b*y+c*pow(y,0.5))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithNegativeY = True
    function_cpp_code = 'temp = _id[_cwo[0]+i]/(coeff[0]+coeff[1]*_id[_cwo[1]+i]+coeff[2]*pow(_id[_cwo[1]+i],0.5));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = x_in/(a+b*y_in+c*pow(y_in,0.5));\n"
        return s



class Simple_Equation_40_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name ="Simple Equation 40"
    _HTML = "z = y/(a+b*x+c*pow(x,0.5))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = _id[_cwo[1]+i]/(coeff[0]+coeff[1]*_id[_cwo[0]+i]+coeff[2]*pow(_id[_cwo[0]+i],0.5));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = y_in/(a+b*x_in+c*pow(x_in,0.5));\n"
        return s



class Simple_Equation_41_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 41"
    _HTML = "z = exp(a+b/x+c*ln(y))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithZeroY = True
    CannotAcceptDataWithNegativeY = True
    function_cpp_code = 'temp = exp(coeff[0]+coeff[1]/_id[_cwo[0]+i]+coeff[2]*log(_id[_cwo[1]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = exp(a+b/x_in+c*ln(y_in));\n"
        return s



class Simple_Equation_42_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 42"
    _HTML = "z = exp(a+b/y+c*ln(x))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    CannotAcceptDataWithZeroY = True
    function_cpp_code = 'temp = exp(coeff[0]+coeff[1]/_id[_cwo[1]+i]+coeff[2]*log(_id[_cwo[0]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = exp(a+b/y_in+c*ln(x_in));\n"
        return s



class Simple_Equation_43_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 43"
    _HTML = "z = a*pow(x,b)*ln(y+c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1])*log(_id[_cwo[1]+i]+coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b)*ln(y_in+c);\n"
        return s



class Simple_Equation_44_3D(pythonequations.EquationBaseClasses.Equation3D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name ="Simple Equation 44"
    _HTML = "z = a*pow(y,b)*ln(x+c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[1]+i],coeff[1])*log(_id[_cwo[0]+i]+coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Y(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(y_in,b)*ln(x_in+c);\n"
        return s



